package com.duobaoyu.dby.supply.db.helper;

import cn.hutool.core.map.MapUtil;
import com.alibaba.ttl.TransmittableThreadLocal;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;

import java.util.Map;

/**
 * @author liyang
 * @version 1.0.0
 * @ClassName RequestDataHelper
 * @Description 动态表名请求参数传递辅助类
 * @createTime 09:16:00 2023/09/27
 */
public class DynamicTableNameHelper {

	/**
	 * 请求参数存取
	 */
	private static final ThreadLocal<Map<String, Object>> REQUEST_DATA = new TransmittableThreadLocal<>();

	/**
	 * 获取请求参数
	 *
	 * @param param 请求参数
	 * @return 请求参数 MAP 对象
	 */
	public static <T> T getRequestData(String param) {
		Map<String, Object> dataMap = getRequestData();
		if (CollectionUtils.isNotEmpty(dataMap)) {
			return (T) dataMap.get(param);
		}
		return null;
	}

	/**
	 * 获取请求参数
	 *
	 * @return 请求参数 MAP 对象
	 */
	public static Map<String, Object> getRequestData() {
		return REQUEST_DATA.get();
	}

	/**
	 * 设置请求参数
	 *
	 * @param requestData 请求参数 MAP 对象
	 */
	public static void setRequestData(Map<String, Object> requestData) {
		Map<String, Object> map = REQUEST_DATA.get();
		if (MapUtil.isEmpty(map)) {
			REQUEST_DATA.set(requestData);
		} else {
			map.putAll(requestData);
		}
	}

	public static void removeRequestData() {
		REQUEST_DATA.remove();
	}
}
